package com.ruoyi.system.mapper;

import com.ruoyi.system.domain.MrDevice;
import com.ruoyi.system.domain.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 设备管理Mapper接口
 *
 * @author ruoyi
 * @date 2022-11-18
 */
public interface MrDeviceMapper
{
    /**
     * 查询设备管理
     *
     * @param deviceId 设备管理主键
     * @return 设备管理
     */
    MrDevice selectMrDeviceByDeviceId(Long deviceId);

    /**
     * 查询设备管理列表
     *
     * @param mrDevice 设备管理
     * @return 设备管理集合
     */
    List<MrDevice> selectMrDeviceList(MrDevice mrDevice);
    List<MrDevice> listDevs(MrDevice mrDevice);

    /**
     * 新增设备管理
     *
     * @param mrDevice 设备管理
     * @return 结果
     */
    int insertMrDevice(MrDevice mrDevice);

    /**
     * 修改设备管理
     *
     * @param mrDevice 设备管理
     * @return 结果
     */
    int updateMrDevice(MrDevice mrDevice);

    /**
     * 批量修改设备管理
     *
     * @param list 设备管理
     */
    void bathUpdateMrDevice(List<MrDevice> list);

    int updateMrDeviceWarnStatus(MrDevice mrDevice);

    /**
     * 删除设备管理
     *
     * @param deviceId 设备管理主键
     * @return 结果
     */
    int deleteMrDeviceByDeviceId(Long deviceId);

    /**
     * 批量删除设备管理
     *
     * @param deviceIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteMrDeviceByDeviceIds(Long[] deviceIds);

    MrDevice checkDevIdUnique(String devId);

    int updateHeartBeat(@Param("deviceId") Long deviceId, @Param("time") String time);

	List<OverviewReponse> overview(MrDevice device);

    MrDevice getDeviceStatusById(MrDevice mrDevice);


    MrDevice getDeviceBySystemId(String systemId);

    MrDevice getDeviceByOutputSource(String outputSource);

    int updateHeartBeatAndStatus(@Param("systemId") String systemId, @Param("time") Date time, @Param("warnStatus") String warnStatus);


    Integer getRegisterAddressMinValue(MrDevice mrDevice);

    Integer getRegisterAddressMaxValue(MrDevice mrDevice);

    List<TestMuteRecordVO> queryTestMuteRecord(MrDevice mrDevice);

    List<ByCategoryVO> byCategory(MrDevice mrDevice);

    List<MrDeviceVO> listByDeptIdAndModality(MrDevice mrDevice);
}
